package com.javase.math;

/**
 * Math 测试(业务实现)
 *
 * @author wangsh
 * @date 2018/11/21 12:06.
 */
public class MathTest {
    /**
     * Math.round() 四舍五入和数学上的不太一样，Java JDK 定义如下：
     * 执行过程：加上 1/2，对结果调用 floor 并将所得结果强制转换为 long 类型。
     * 换句话说，结果等于以下表达式的值：(long)Math.floor(a + 0.5d)
     *
     * @param value
     * @return
     */
    public long round(double value) {
        return Math.round(value);
    }

    public static void main(String[] args) {
        MathTest test = new MathTest();

        System.out.println(test.round(-4.5));
        // 相当于
        System.out.println((long) Math.floor(-4.5 + 0.5));

        // 小心了：这里的答案是-5.0
        System.out.println(test.round(-4.51));
        // 相当于
        System.out.println((long) Math.floor(-4.51 + 0.5));
    }
}
